<!--父级页面：控制除登录以外所有子页面共有的左侧菜单栏和顶部条-->
<template>
  <div style="display: flex">
    <!--   左侧菜单栏-->
    <div :style="{width:(isCollapse?'64px':'208px')}">
      <el-menu
          background-color="#3c82f5"
          style="width: 100%; height:100vh;"
          text-color="#fff"
          active-text-color="#ff0"
          unique-opened
          router
          :collapse="isCollapse"
          :collapse-transition="false"
      >
        <!--      左侧菜单栏顶部条-->
        <el-row style="padding-top:10px ">
          <el-col :span="2"></el-col>
          <el-col :span="7" style="padding-left:7px ">
            <!--            头像组件，把图片切成圆形-->
            <el-avatar src="/imgs/admin/logo.png" style="width: 35px;height: 35px"></el-avatar>
          </el-col>
          <el-col :span="isCollapse ? 0 : 13">
            <span style="color: #fff;font-weight: bold;position: relative;top:8px;left: 2px;">智慧车辆</span>
          </el-col>
        </el-row>

        <el-sub-menu index="1">
          <template #title>
            <el-icon style="font-size: 21px">
              <User/>
            </el-icon>
            <span>用户管理</span>
          </template>
          <el-menu-item index="/user">用户列表</el-menu-item>
        </el-sub-menu>

        <el-sub-menu index="2">
          <template #title>
            <el-icon style="font-size: 21px">
              <Van/>
            </el-icon>
            <span>车辆管理</span>
          </template>
          <el-menu-item index="/vehicle">车辆列表</el-menu-item>
        </el-sub-menu>

        <el-sub-menu index="3">
          <template #title>
            <el-icon style="font-size: 21px">
              <Location/>
            </el-icon>
            <span>电子围栏</span>
          </template>
          <el-menu-item index="/geofence">围栏管理</el-menu-item>
        </el-sub-menu>

        <el-sub-menu index="4">
          <template #title>
            <el-icon style="font-size: 21px">
              <Place/>
            </el-icon>
            <span>调度管理</span>
          </template>
          <el-menu-item index="/application">申请管理</el-menu-item>
          <el-menu-item index="/audit">调度审核</el-menu-item>
          <el-menu-item index="/distribute">车辆分配</el-menu-item>
        </el-sub-menu>

        <el-sub-menu index="5">
          <template #title>
            <el-icon style="font-size: 21px">
              <MessageBox/>
            </el-icon>
            <span>数据字典</span>
          </template>
          <el-menu-item index="/dict">字典管理</el-menu-item>
        </el-sub-menu>

      </el-menu>
    </div>
    <!--   右侧菜单栏-->
    <div :style="{width:(isCollapse?'calc(100% - 64px)':'calc(100% - 208px)')}">
      <!--   右侧顶部条-->
      <el-header style="padding-top: 22px; height: 10vh;background-color: #fff">
        <!--        分栏，左边是折叠图标，右边是用户信息和下拉菜单-->
        <el-row :gutter="10">
          <el-col :span="18">
            <el-icon style="font-size: 20px" @click="changeCollapsed">
              <Expand/>
            </el-icon>
          </el-col>
          <el-col :span="6" style="position: relative">

<!--           下拉列表-->
            <el-dropdown trigger="click" style="position: absolute;right: 20px">
<!--              文字后面跟一个图标-->
              <span  style="font-size: 19px;font-weight: bold">
              {{user.username}}
              <el-icon class="el-icon--right"><arrow-down/></el-icon>
              </span>
              <!--                下拉列表项-->
              <template #dropdown>

                <el-dropdown-menu>
                  <el-dropdown-item @click="logout">退出登录</el-dropdown-item>
                </el-dropdown-menu>

              </template>

            </el-dropdown>

          </el-col>
        </el-row>
<!--        面包屑导航-->
          <el-breadcrumb :separator-icon="ArrowRight" style="position: relative;top: 20px">
<!--           <el-breadcrumb-item>首页</el-breadcrumb-item>-->
            <el-breadcrumb-item v-for="item in breadcrumb">{{item}}</el-breadcrumb-item>

          </el-breadcrumb>

      </el-header>
      <!--   右侧可变区域-->
      <el-main style="padding: 0">
        <router-view/>
      </el-main>

    </div>
  </div>
</template>


<script setup>
import { ArrowRight } from '@element-plus/icons-vue'
import {onMounted, ref} from "vue";
import {useRoute,useRouter} from "vue-router";
// 折叠图标的值,布尔值
const isCollapse = ref(false)

const changeCollapsed = () => {
  // 折叠图标的值,每次点击取反
  isCollapse.value = !isCollapse.value
}

const user=ref(getUser())
const logout=()=>{
  if(confirm('你确定要退出登录吗啊?')){
    //退出时：清空localStorage中的user数据
    localStorage.removeItem('user')
    //跳转回登录页面
    window.location.href='/login'
    //清空user变量
    user.value='';
  }
}

//面包屑路径-----------------------------------------
//定义数组对象用来维护当前面包屑导航显示的值
const breadcrumb=ref([]);
//定义对象用来维护路由path与面包屑数组的对应关系
let map={
  '/user':['用户管理','用户列表'],
  '/vehicle':['车辆管理','车辆列表'],
  '/geofence':['电子围栏','围栏管理'],
  '/geofenceMap':['电子围栏','电子围栏地图'],
  '/application':['调度管理','申请列表'],
  '/audit':['调度管理','调度审核'],
  '/distribute':['调度管理','车辆分配'],
  '/dict':['数据字典','字典管理'],
  '/dictOption':['数据字典','字典管理','字典项'],

}
//useRoute()是vue路由器提供的一个API,用来访问当前组件的路由状态数据
const route=useRoute();
//定义方法，每次路由发生变化是，立即触发
const updateBreadcrumb=(route)=>{
  //从当前页面获取path值
  const path=route.path;
  //在map对象中找到对应的数组值
  breadcrumb.value = map[path] || ['用户管理','用户列表'];
}
//一进入页面立即执行的方法onMounted
onMounted(()=>{
  updateBreadcrumb(route)
})
//获取路由器对象
const router=useRouter();
router.beforeEach((to,from,next)=>{
  //立即更新面包屑的值
  updateBreadcrumb(to);
  //在进行路由跳转
  next();
})
//面包屑路径^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
</script>